package com.xing.binbackend.pattern.template32;

/**
 * 将不变流程固化在父类，可变步骤延迟到子类实现
 *
 * 案例1：分布式事务补偿框架
 *
 * 引导性思考问题
     * 模式理解
         * 为什么模板方法要声明为final？如果子类可以重写模板方法会带来什么问题？
         * 钩子方法（Hook Method）与抽象方法有何本质区别？分别在什么场景下使用？
     * 设计决策
         * 当某个步骤有80%的子类实现相同逻辑时，应该使用抽象方法还是提供默认实现？
         * 如果算法流程需要根据运行时条件动态调整步骤顺序，模板方法模式是否仍然适用？
    *  实战应用
         * 在Spring框架的JdbcTemplate中，execute()方法如何运用模板模式处理数据库连接？
         * 如何在微服务架构中设计一个统一的RPC调用模板，处理重试/熔断/日志等公共逻辑？
    * 反模式警示
         * 当算法步骤超过7个时，模板方法模式是否会导致类爆炸？如何优化？
         * 如果父类频繁修改模板方法，会对子类产生什么影响？如何通过设计减少这种耦合？
 *  知识延伸方向
     * 模式变体：对比 策略模式 与模板方法模式的异同（策略通过组合，模板通过继承）
     * 框架应用：研究MyBatis的Executor实现，分析BaseExecutor如何定义执行骨架
     * 设计原则：理解模板方法模式如何体现 开闭原则（对扩展开放，对修改关闭）
     * 复杂调试：当模板方法出现执行顺序错误时，如何通过模板方法模式快速定位问题？
 *
 * 何时使用模板模式？
 * ✅ 多个类有相同算法骨架，但某些步骤实现不同
 * ✅ 需要控制子类扩展点，避免核心流程被破坏
 * ✅ 存在多个相似流程，希望通过重构消除重复代码
 * ❌ 算法步骤频繁变化（考虑策略模式）
 * ❌ 类层次过深导致维护困难（考虑组合替代继承）
 *
 */
public class Client {
//    案例1：分布式事务补偿框架
//    TransactionTemplate
//    PointsService

//    案例2：AI 模型训练流水线
//    ModelTrainingTemplate
//    ImageClassifier
}
